home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1995 August: Tool Chest / Dev.CD Aug 95 TC / Dev.CD Aug 95 TC.toast / New System Software Extensions / QuickDraw™ 3D 1.0 / Development / Interfaces / QD3DIO.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-06-02  |  18.5 KB  |  662 lines  |  [TEXT/MPS ]

  1. /******************************************************************************
  2.  **                                                                              **
  3.  **     Module:        QD3DIO.h                                                 **                        
  4.  **                                                                              **
  5.  **                                                                              **
  6.  **     Purpose:    QuickDraw 3D IO API                                         **            
  7.  **                                                                              **
  8.  **                                                                              **
  9.  **                                                                              **
  10.  **     Copyright (C) 1992-1995 Apple Computer, Inc.  All rights reserved.     **
  11.  **                                                                              **
  12.  **                                                                              **
  13.  *****************************************************************************/
  14. #ifndef QD3DIO_h
  15. #define QD3DIO_h
  16.  
  17. #ifndef QD3D_h
  18. #include "QD3D.h"
  19. #endif  /*  QD3D_h  */
  20.  
  21. #if PRAGMA_ONCE
  22.     #pragma once
  23. #endif
  24.  
  25. #include "QD3DDrawContext.h"
  26. #include "QD3DView.h"
  27.  
  28. #ifdef __cplusplus
  29. extern "C" {
  30. #endif  /* __cplusplus */
  31.  
  32. /******************************************************************************
  33.  **                                                                              **
  34.  **                                    Basic Types                                 **                                                    
  35.  **                                                                              **
  36.  *****************************************************************************/
  37.  
  38. typedef unsigned char    TQ3Uns8;    /* 1 byte unsigned integer                 */ 
  39. typedef signed   char    TQ3Int8;    /* 1 byte signed integer                 */ 
  40. typedef unsigned short    TQ3Uns16;    /* 2 byte unsigned integer                 */ 
  41. typedef signed   short    TQ3Int16;    /* 2 byte signed integer                 */ 
  42. typedef unsigned long    TQ3Uns32;    /* 4 byte unsigned integer                 */
  43. typedef signed   long    TQ3Int32;    /* 4 byte signed integer                 */
  44.  
  45. typedef struct TQ3Uns64 {
  46.     unsigned long    hi;
  47.     unsigned long     lo; 
  48. } TQ3Uns64;                            /* 8 byte unsigned integer                 */
  49.  
  50. typedef struct TQ3Int64 { 
  51.     signed long        hi; 
  52.     unsigned long    lo; 
  53. } TQ3Int64;                            /* 8 byte signed integer                 */
  54.  
  55. typedef float            TQ3Float32;    /* 4 byte floating point number             */
  56. typedef double            TQ3Float64;    /* 8 byte floating point number             */
  57.  
  58. typedef TQ3Uns32        TQ3Size;
  59.  
  60.  
  61. /******************************************************************************
  62.  **                                                                              **
  63.  **                                    File Types                                 **
  64.  **                                                                              **
  65.  *****************************************************************************/
  66.  
  67. typedef enum TQ3FileModeMasks {
  68.     kQ3FileModeNormal        = 0,
  69.     kQ3FileModeStream        = 1 << 0,
  70.     kQ3FileModeDatabase        = 1 << 1,
  71.     kQ3FileModeText            = 1 << 2
  72. } TQ3FileModeMasks;
  73.  
  74. typedef unsigned long TQ3FileMode;
  75.  
  76.  
  77. /******************************************************************************
  78.  **                                                                              **
  79.  **                                    Method Types                             **
  80.  **                                                                              **
  81.  *****************************************************************************/
  82.  
  83. /*
  84.  *    IO Methods
  85.  *
  86.  *    The IO system treats all objects as groups of typed information.
  87.  *    When you register your element or attribute, the "elementType" is the 
  88.  *    binary type of your object, the "elementName" the ascii type.
  89.  *    
  90.  *    All objects in the metafile are made up of a "root" or parent object which
  91.  *    defines the instantiated object type. You may define the format of your 
  92.  *    data any way you wish as long as you use the primitives types above and the
  93.  *    routines below.
  94.  *
  95.  *    Root Objects are often appended with additional child objects, called 
  96.  *    subobjects. You may append your object with other QuickDraw 3D objects.
  97.  *    
  98.  *    Writing is straightforward: an object traverses itself any other objects 
  99.  *    that make it up, then writes its own data. Writing uses two methods: 
  100.  *    TQ3ObjectTraverseMethod and TQ3ObjectWriteMethod.
  101.  *
  102.  *    The TQ3ObjectTraverseMethod method should:
  103.  *    + First, Determine if the data should be written 
  104.  *        - if you don't want to write out your object after examining your
  105.  *            data, return kQ3Success in your Traverse method without calling
  106.  *            any other submit calls.
  107.  *     + Next, calculate the size of your object on disk
  108.  *     + Gather whatever state from the view you need to preserve
  109.  *         - you may access the view state NOW, as the state of the
  110.  *             view duing your TQ3ObjectWriteMethod will not be valid. You may
  111.  *             pass a temporary buffer to your write method.
  112.  *     + Submit your view write data using Q3View_SubmitWriteData
  113.  *         - note that you MUST call this before any other "_Submit" call.
  114.  *         - you may pass in a "deleteMethod" for your data. This method
  115.  *             will be called whether or not your write method succeeds or fails.
  116.  *     + Submit your subobjects to the view
  117.  *     
  118.  *     The TQ3ObjectWriteMethod method should:
  119.  *     + Write your data format to the file using the primitives routines below.
  120.  *         - If you passed a "deleteMethod" in your Q3View_SubmitWriteData, that
  121.  *             method will be called upon exit of your write method.
  122.  *
  123.  *    Reading is less straightforward because your root object and
  124.  *    any subobjects must be read inside of your TQ3ObjectReadDataMethod. There 
  125.  *    is an implicit state contained in the file while reading, which you must 
  126.  *    be aware of. When you first enter the read method, you must physically 
  127.  *    read in your data format using the primitives routines until
  128.  *    
  129.  *    Q3File_IsEndOfData(file) == kQ3True
  130.  *    
  131.  *    Generally, your data format should be self-descriptive such that you do not
  132.  *    need to call Q3File_IsEndOfData to determine if you are done reading. 
  133.  *    However, this call is useful for determining zero-sized object or 
  134.  *    determining the end of an object's data.
  135.  *    
  136.  *    Once you have read in all the data, you may collect subobjects. A metafile
  137.  *    object ONLY has subobjects if it is in a container. The call
  138.  *    
  139.  *    Q3File_IsEndOfContainer(file)
  140.  *    
  141.  *    returns kQ3False if subobjects exist, and kQ3True if subobjects do not 
  142.  *    exist.
  143.  *    
  144.  *    At this point, you may use
  145.  *    
  146.  *    Q3File_GetNextObjectType
  147.  *    Q3File_IsNextObjectOfType
  148.  *    Q3File_ReadObject
  149.  *    Q3File_SkipObject
  150.  *    
  151.  *    to iterate through the subobjects until Q3File_IsEndOfContainer(file) 
  152.  *    is kQ3True.
  153.  * 
  154.  */
  155.  
  156. /*
  157.  *    TQ3ObjectTraverseMethod
  158.  *
  159.  *    For "elements" (meaning "attributes, too), you will be passed NULL for 
  160.  *    object. Sorry, custom objects will be available in the next major revision.
  161.  *
  162.  *    The "data" is a pointer to your internal element data.
  163.  *
  164.  *    The view is the current traversal view.
  165.  */
  166.  
  167. typedef TQ3Status (*TQ3ObjectTraverseMethod)(
  168.     TQ3Object            object,
  169.     void                *data,
  170.     TQ3ViewObject        view);
  171.  
  172. typedef TQ3Status (*TQ3ObjectWriteMethod)(
  173.     const void            *object,
  174.     TQ3FileObject        file);
  175.  
  176. /*
  177.  *    TQ3ObjectReadDataMethod
  178.  *
  179.  *  For "elements" (meaning "attributes", too), you must allocate stack space 
  180.  *    and call Q3Set_Add on "parentObject", which is an TQ3SetObject.
  181.  *
  182.  *    Otherwise, parentObject is whatever object your element is a subobject of...
  183.  */
  184.  
  185. typedef TQ3Status (*TQ3ObjectReadDataMethod)(
  186.     TQ3Object            parentObject,
  187.     TQ3FileObject        file);
  188.  
  189. #define Q3FileVersion(majorVersion, minorVersion)    (TQ3FileVersion) \
  190.     ((((TQ3Uns32) majorVersion & 0xFFFF) << 16) | ((TQ3Uns32) minorVersion & 0xFFFF))
  191.  
  192. typedef unsigned long            TQ3FileVersion;
  193. #define kQ3FileVersionCurrent    Q3FileVersion(1,0)
  194.  
  195.  
  196. /******************************************************************************
  197.  **                                                                              **
  198.  **                                String Constants                             **
  199.  **                                                                              **
  200.  *****************************************************************************/
  201.  
  202. #define kQ3StringMaximumLength            1024
  203.  
  204.  
  205. /******************************************************************************
  206.  **                                                                              **
  207.  **                                File Routines                                 **
  208.  **                                                                              **
  209.  *****************************************************************************/
  210. /*
  211.  * Creation and accessors
  212.  */
  213. QD3D_EXPORT TQ3FileObject Q3File_New(
  214.     void);
  215.  
  216. QD3D_EXPORT TQ3Status Q3File_GetStorage(
  217.     TQ3FileObject        file,
  218.     TQ3StorageObject    *storage);
  219.  
  220. QD3D_EXPORT TQ3Status Q3File_SetStorage(
  221.     TQ3FileObject        file,
  222.     TQ3StorageObject    storage);
  223.  
  224. /*
  225.  * Opening, and accessing "open" state, closing/cancelling
  226.  */
  227. QD3D_EXPORT TQ3Status Q3File_OpenRead(
  228.     TQ3FileObject        file,
  229.     TQ3FileMode            *mode);
  230.  
  231. QD3D_EXPORT TQ3Status Q3File_OpenWrite(
  232.     TQ3FileObject        file,
  233.     TQ3FileMode            mode);
  234.  
  235. QD3D_EXPORT TQ3Status Q3File_IsOpen(
  236.     TQ3FileObject        file,
  237.     TQ3Boolean            *isOpen);
  238.  
  239. QD3D_EXPORT TQ3Status Q3File_GetMode(
  240.     TQ3FileObject        file,
  241.     TQ3FileMode            *mode);
  242.  
  243. QD3D_EXPORT TQ3Status Q3File_GetVersion(
  244.     TQ3FileObject        file,
  245.     TQ3FileVersion        *version);
  246.  
  247. QD3D_EXPORT TQ3Status Q3File_Close(
  248.     TQ3FileObject        file);
  249.  
  250. QD3D_EXPORT TQ3Status Q3File_Cancel(
  251.     TQ3FileObject        file);
  252.  
  253. /*
  254.  * Writing (Application)
  255.  */
  256. QD3D_EXPORT TQ3Status Q3View_StartWriting(
  257.     TQ3ViewObject         view,
  258.     TQ3FileObject        file);
  259.  
  260. QD3D_EXPORT TQ3ViewStatus Q3View_EndWriting(
  261.     TQ3ViewObject         view);
  262.  
  263. /*
  264.  * Reading (Application)
  265.  */
  266. QD3D_EXPORT TQ3ObjectType Q3File_GetNextObjectType(
  267.     TQ3FileObject        file);
  268.  
  269. QD3D_EXPORT TQ3Boolean Q3File_IsNextObjectOfType(
  270.     TQ3FileObject        file,
  271.     TQ3ObjectType        ofType);
  272.  
  273. QD3D_EXPORT TQ3Object Q3File_ReadObject(
  274.     TQ3FileObject        file);
  275.  
  276. QD3D_EXPORT TQ3Status Q3File_SkipObject(
  277.     TQ3FileObject        file);
  278.  
  279. QD3D_EXPORT TQ3Boolean Q3File_IsEndOfData(
  280.     TQ3FileObject        file);
  281.  
  282. QD3D_EXPORT TQ3Boolean Q3File_IsEndOfContainer(
  283.     TQ3FileObject        file,
  284.     TQ3Object            rootObject);
  285.  
  286. QD3D_EXPORT TQ3Boolean Q3File_IsEndOfFile(
  287.     TQ3FileObject        file);
  288.  
  289. /*
  290.  * Idling
  291.  */
  292. typedef TQ3Status (*TQ3FileIdleMethod)(
  293.     TQ3FileObject        file,
  294.     const void            *idlerData);
  295.  
  296. QD3D_EXPORT TQ3Status Q3File_SetIdleMethod(
  297.     TQ3FileObject        file,
  298.     TQ3FileIdleMethod    idle,
  299.     const void            *idleData);
  300.  
  301. typedef void (*TQ3DataDeleteMethod)(
  302.     void                *data);
  303. /*
  304.  * Custom object writing 
  305.  */
  306. QD3D_EXPORT TQ3Status Q3View_SubmitWriteData(
  307.     TQ3ViewObject        view,
  308.     TQ3Size                size,    
  309.     void                *data,
  310.     TQ3DataDeleteMethod    deleteData);
  311.  
  312.  
  313. /******************************************************************************
  314.  **                                                                              **
  315.  **                                Primitives Routines                             **
  316.  **                                                                              **
  317.  *****************************************************************************/
  318.  
  319. QD3D_EXPORT TQ3Status Q3Uns8_Read(
  320.     TQ3Uns8                *data,
  321.     TQ3FileObject        file);
  322.  
  323. QD3D_EXPORT TQ3Status Q3Uns8_Write(
  324.     const TQ3Uns8        data,
  325.     TQ3FileObject        file);
  326.  
  327. QD3D_EXPORT TQ3Status Q3Uns16_Read(
  328.     TQ3Uns16                *data,
  329.     TQ3FileObject        file);
  330.  
  331. QD3D_EXPORT TQ3Status Q3Uns16_Write(
  332.     const TQ3Uns16        data,
  333.     TQ3FileObject        file);
  334.  
  335. QD3D_EXPORT TQ3Status Q3Uns32_Read(
  336.     TQ3Uns32                *data,
  337.     TQ3FileObject        file);
  338.         
  339. QD3D_EXPORT TQ3Status Q3Uns32_Write(
  340.     const TQ3Uns32        data,
  341.     TQ3FileObject        file);
  342.  
  343. QD3D_EXPORT TQ3Status Q3Int32_Read(
  344.     TQ3Int32            *data,
  345.     TQ3FileObject        file);
  346.             
  347. QD3D_EXPORT TQ3Status Q3Int32_Write(
  348.     const TQ3Int32        data,
  349.     TQ3FileObject        file);
  350.             
  351. QD3D_EXPORT TQ3Status Q3Uns64_Read(
  352.     TQ3Uns64            *data,
  353.     TQ3FileObject        file);
  354.         
  355. QD3D_EXPORT TQ3Status Q3Uns64_Write(
  356.     const TQ3Uns64        data,
  357.     TQ3FileObject        file);
  358.  
  359. QD3D_EXPORT TQ3Status Q3Float32_Read(
  360.     TQ3Float32            *data,
  361.     TQ3FileObject        file);
  362.  
  363. QD3D_EXPORT TQ3Status Q3Float32_Write(
  364.     const TQ3Float32    data,
  365.     TQ3FileObject        file);
  366.  
  367. QD3D_EXPORT TQ3Status Q3Float64_Read(
  368.     TQ3Float64            *data,
  369.     TQ3FileObject        file);
  370.  
  371. QD3D_EXPORT TQ3Status Q3Float64_Write(
  372.     const TQ3Float64    data,
  373.     TQ3FileObject        file);
  374.  
  375. QD3D_EXPORT TQ3Size Q3Size_Pad(
  376.     TQ3Size                size);
  377.  
  378. /*
  379.  * Pass a pointer to a buffer of kQ3StringMaximumLength bytes
  380.  */
  381. QD3D_EXPORT TQ3Status Q3String_Read(
  382.     char                *data,
  383.     unsigned long        *length,
  384.     TQ3FileObject        file);
  385.  
  386. QD3D_EXPORT TQ3Status Q3String_Write(
  387.     const char            *data,
  388.     TQ3FileObject        file);
  389.  
  390. /* 
  391.  * This call will read Q3Size_Pad(size) bytes,
  392.  *    but only place size bytes into data.
  393.  */
  394. QD3D_EXPORT TQ3Status Q3RawData_Read(
  395.     unsigned char        *data,
  396.     unsigned long        size,
  397.     TQ3FileObject        file);
  398.  
  399. /* 
  400.  * This call will write Q3Size_Pad(size) bytes,
  401.  *    adding 0's to pad to the nearest 4 byte boundary.
  402.  */
  403. QD3D_EXPORT TQ3Status Q3RawData_Write(
  404.     const unsigned char    *data,
  405.     unsigned long        size,
  406.     TQ3FileObject        file);
  407.  
  408.  
  409. /******************************************************************************
  410.  **                                                                              **
  411.  **                        Convenient Primitives Routines                         **
  412.  **                                                                              **
  413.  *****************************************************************************/
  414.  
  415. QD3D_EXPORT TQ3Status Q3Point2D_Read(
  416.     TQ3Point2D                    *point2D,
  417.     TQ3FileObject                file);
  418.  
  419. QD3D_EXPORT TQ3Status Q3Point2D_Write(
  420.     const TQ3Point2D            *point2D,
  421.     TQ3FileObject                file);
  422.  
  423. QD3D_EXPORT TQ3Status Q3Point3D_Read(
  424.     TQ3Point3D                    *point3D,
  425.     TQ3FileObject                file);
  426.  
  427. QD3D_EXPORT TQ3Status Q3Point3D_Write(
  428.     const TQ3Point3D            *point3D,
  429.     TQ3FileObject                file);
  430.     
  431. QD3D_EXPORT TQ3Status Q3RationalPoint3D_Read(
  432.     TQ3RationalPoint3D            *point3D,
  433.     TQ3FileObject                file);
  434.  
  435. QD3D_EXPORT TQ3Status Q3RationalPoint3D_Write(
  436.     const TQ3RationalPoint3D    *point3D,
  437.     TQ3FileObject                file);
  438.  
  439. QD3D_EXPORT TQ3Status Q3RationalPoint4D_Read(
  440.     TQ3RationalPoint4D            *point4D,
  441.     TQ3FileObject                file);
  442.  
  443. QD3D_EXPORT TQ3Status Q3RationalPoint4D_Write(
  444.     const TQ3RationalPoint4D    *point4D,
  445.     TQ3FileObject                file);
  446.  
  447. QD3D_EXPORT TQ3Status Q3Vector2D_Read(
  448.     TQ3Vector2D                    *vector2D,
  449.     TQ3FileObject                file);
  450.  
  451. QD3D_EXPORT TQ3Status Q3Vector2D_Write(
  452.     const TQ3Vector2D            *vector2D,
  453.     TQ3FileObject                file);
  454.  
  455. QD3D_EXPORT TQ3Status Q3Vector3D_Read(
  456.     TQ3Vector3D                    *vector3D,
  457.     TQ3FileObject                file);
  458.  
  459. QD3D_EXPORT TQ3Status Q3Vector3D_Write(
  460.     const TQ3Vector3D            *vector3D,
  461.     TQ3FileObject                file);
  462.  
  463. QD3D_EXPORT TQ3Status Q3Matrix4x4_Read(
  464.     TQ3Matrix4x4                *matrix4x4,
  465.     TQ3FileObject                file);
  466.  
  467. QD3D_EXPORT TQ3Status Q3Matrix4x4_Write(
  468.     const TQ3Matrix4x4            *matrix4x4,
  469.     TQ3FileObject                file);
  470.  
  471. QD3D_EXPORT TQ3Status Q3Tangent2D_Read(
  472.     TQ3Tangent2D                *tangent2D,
  473.     TQ3FileObject                file);
  474.  
  475. QD3D_EXPORT TQ3Status Q3Tangent2D_Write(
  476.     const TQ3Tangent2D            *tangent2D,
  477.     TQ3FileObject                file);
  478.  
  479. QD3D_EXPORT TQ3Status Q3Tangent3D_Read(
  480.     TQ3Tangent3D                *tangent3D,
  481.     TQ3FileObject                file);
  482.  
  483. QD3D_EXPORT TQ3Status Q3Tangent3D_Write(
  484.     const TQ3Tangent3D            *tangent3D,
  485.     TQ3FileObject                file);
  486.  
  487. /*    This call affects only text Files - it is a no-op in binary files */
  488.  
  489. QD3D_EXPORT TQ3Status Q3Comment_Write(
  490.     char                        *comment,
  491.     TQ3FileObject                file);
  492.  
  493.  
  494. /******************************************************************************
  495.  **                                                                              **
  496.  **                                Unknown Object                                 **
  497.  **                                                                              **
  498.  **        Unknown objects are generated when reading files which contain         **
  499.  **        custom data which has not been registered in the current             **
  500.  **        instantiation of QuickDraw 3D.                                         **
  501.  **                                                                              **
  502.  *****************************************************************************/
  503.  
  504. QD3D_EXPORT TQ3ObjectType Q3Unknown_GetType(
  505.     TQ3UnknownObject        unknownObject);
  506.  
  507. QD3D_EXPORT TQ3Status Q3Unknown_GetDirtyState(
  508.     TQ3UnknownObject        unknownObject,
  509.     TQ3Boolean                *isDirty);
  510.  
  511. QD3D_EXPORT TQ3Status Q3Unknown_SetDirtyState(
  512.     TQ3UnknownObject        unknownObject,
  513.     TQ3Boolean                isDirty);
  514.  
  515.  
  516. /******************************************************************************
  517.  **                                                                              **
  518.  **                            Unknown Text Routines                             **
  519.  **                                                                              **
  520.  *****************************************************************************/
  521.  
  522. typedef struct TQ3UnknownTextData {
  523.     char                    *objectName;    /* '\0' terminated */
  524.     char                    *contents;        /* '\0' terminated */
  525. } TQ3UnknownTextData;
  526.  
  527. QD3D_EXPORT TQ3Status Q3UnknownText_GetData(
  528.     TQ3UnknownObject        unknownObject,
  529.     TQ3UnknownTextData        *unknownTextData);
  530.  
  531. QD3D_EXPORT TQ3Status Q3UnknownText_EmptyData(
  532.     TQ3UnknownTextData        *unknownTextData);
  533.  
  534.  
  535. /******************************************************************************
  536.  **                                                                              **
  537.  **                            Unknown Binary Routines                             **
  538.  **                                                                              **
  539.  *****************************************************************************/
  540.  
  541. typedef struct TQ3UnknownBinaryData {
  542.     TQ3ObjectType            objectType;
  543.     unsigned long            size;
  544.     TQ3Endian                byteOrder;
  545.     char                    *contents;
  546. } TQ3UnknownBinaryData;
  547.  
  548. QD3D_EXPORT TQ3Status Q3UnknownBinary_GetData(
  549.     TQ3UnknownObject        unknownObject,
  550.     TQ3UnknownBinaryData    *unknownBinaryData);
  551.  
  552. QD3D_EXPORT TQ3Status Q3UnknownBinary_EmptyData(
  553.     TQ3UnknownBinaryData    *unknownBinaryData);
  554.  
  555.  
  556. /******************************************************************************
  557.  **                                                                              **
  558.  **                            ViewHints routines                                 **
  559.  **                                                                              **
  560.  **        ViewHints are an object in a metafile to give you some hints on how     **
  561.  **        to render a scene.    You may create a view with any of the objects     **
  562.  **        retrieved from it, or you can just throw it away.                     **
  563.  **                                                                              **
  564.  **        To write a view hints to a file, create a view hints object from a     **
  565.  **        view and write the view hints.                                         **
  566.  **                                                                              **
  567.  *****************************************************************************/
  568.  
  569. QD3D_EXPORT TQ3ViewHintsObject Q3ViewHints_New(
  570.     TQ3ViewObject            view);
  571.  
  572. QD3D_EXPORT TQ3Status Q3ViewHints_SetRenderer(
  573.     TQ3ViewHintsObject        viewHints,
  574.     TQ3RendererObject        renderer);
  575.  
  576. QD3D_EXPORT TQ3Status Q3ViewHints_GetRenderer(
  577.     TQ3ViewHintsObject        viewHints,
  578.     TQ3RendererObject        *renderer);
  579.  
  580. QD3D_EXPORT TQ3Status Q3ViewHints_SetCamera(
  581.     TQ3ViewHintsObject        viewHints,
  582.     TQ3CameraObject            camera);
  583.  
  584. QD3D_EXPORT TQ3Status Q3ViewHints_GetCamera(
  585.     TQ3ViewHintsObject        viewHints,
  586.     TQ3CameraObject            *camera);
  587.  
  588. QD3D_EXPORT TQ3Status Q3ViewHints_SetLightGroup(
  589.     TQ3ViewHintsObject        viewHints,
  590.     TQ3GroupObject            lightGroup);
  591.  
  592. QD3D_EXPORT TQ3Status Q3ViewHints_GetLightGroup(
  593.     TQ3ViewHintsObject        viewHints,
  594.     TQ3GroupObject            *lightGroup);
  595.  
  596. QD3D_EXPORT TQ3Status Q3ViewHints_SetAttributeSet(
  597.     TQ3ViewHintsObject        viewHints,
  598.     TQ3AttributeSet            attributeSet);
  599.  
  600. QD3D_EXPORT TQ3Status Q3ViewHints_GetAttributeSet(
  601.     TQ3ViewHintsObject        viewHints,
  602.     TQ3AttributeSet            *attributeSet);
  603.  
  604. QD3D_EXPORT TQ3Status Q3ViewHints_SetDimensionsState(
  605.     TQ3ViewHintsObject        viewHints,
  606.     TQ3Boolean                isValid);
  607.     
  608. QD3D_EXPORT TQ3Status Q3ViewHints_GetDimensionsState(
  609.     TQ3ViewHintsObject        viewHints,
  610.     TQ3Boolean                *isValid);
  611.  
  612. QD3D_EXPORT TQ3Status Q3ViewHints_SetDimensions(
  613.     TQ3ViewHintsObject        viewHints,
  614.     unsigned long            width,
  615.     unsigned long            height);
  616.  
  617. QD3D_EXPORT TQ3Status Q3ViewHints_GetDimensions(
  618.     TQ3ViewHintsObject        viewHints,
  619.     unsigned long            *width,
  620.     unsigned long            *height);
  621.  
  622. QD3D_EXPORT TQ3Status Q3ViewHints_SetMaskState(
  623.     TQ3ViewHintsObject        viewHints,
  624.     TQ3Boolean                isValid);
  625.  
  626. QD3D_EXPORT TQ3Status Q3ViewHints_GetMaskState(
  627.     TQ3ViewHintsObject        viewHints,
  628.     TQ3Boolean                *isValid);
  629.  
  630. QD3D_EXPORT TQ3Status Q3ViewHints_SetMask(    
  631.     TQ3ViewHintsObject        viewHints,
  632.     const TQ3Bitmap            *mask);
  633.  
  634. QD3D_EXPORT TQ3Status Q3ViewHints_GetMask(    
  635.     TQ3ViewHintsObject        viewHints,
  636.     TQ3Bitmap                *mask);
  637.  
  638. /* Call Q3Bitmap_Empty when done with the mask    */
  639.  
  640. QD3D_EXPORT TQ3Status Q3ViewHints_SetClearImageMethod(
  641.     TQ3ViewHintsObject                viewHints,
  642.     TQ3DrawContextClearImageMethod    clearMethod);
  643.  
  644. QD3D_EXPORT TQ3Status Q3ViewHints_GetClearImageMethod(
  645.     TQ3ViewHintsObject                viewHints,
  646.     TQ3DrawContextClearImageMethod    *clearMethod);
  647.  
  648. QD3D_EXPORT TQ3Status Q3ViewHints_SetClearImageColor(
  649.     TQ3ViewHintsObject                viewHints,
  650.     const TQ3ColorARGB                 *color);
  651.  
  652. QD3D_EXPORT TQ3Status Q3ViewHints_GetClearImageColor(
  653.     TQ3ViewHintsObject                viewHints,
  654.     TQ3ColorARGB                     *color);
  655.  
  656.  
  657. #ifdef __cplusplus
  658. }
  659. #endif    /* __cplusplus */
  660.  
  661. #endif /* QD3DIO_h */
  662.